const express=require('express');
// 引入连接池模块
const pool=require('../pool.js');
// 创建路由器对象
const r=express.Router();
// 添加路由
//1.用户注册路由
// post /reg
r.post('/reg',(req,res)=>{
    // 1.1获取post传递的数据
    let obj=req.body;
    console.log(obj);
    // 1.2验证数据是否为空
    if(!obj.uname){
        res.send({code:401,msg:'uname required'});
        return;
    }
    if(!obj.upwd){
        res.send({code:402,msg:'upwd required'});
        return;
    }
    if(!obj.email){
        res.send({code:403,msg:'email required'});
        return;
    }
    if(!obj.phone){
        res.send({code:404,msg:'phone required'});
        return;
    }
    // 1.3执行SQL语句，插入到用户表中
    pool.query('INSERT INTO xz_user SET ?',[obj],(err,result)=>{
        if(err)throw err;
        console.log(result);
        // 插入成功后在响应
       res.send({code:200,msg:'reg success'});
    });
});
// 2.用户登陆路由
// post /login
r.post('/login',(req,res)=>{
    // 2.1获取post传递的数据
    let obj=req.body;
    // 2.2验证数据是否为空
    if(!obj.uname){
        res.send({code:401,msg:'uname required'});
        return;
    }
    if(!obj.upwd){
        res.send({code:402,msg:'upwd required'});
        return;
    }
    // 2.3执行SQL语句，查询是否用户名密码同时匹配，如果有响应'成功'，否则'失败'
    pool.query('SELECT * FROM xz_user WHERE uname=? AND upwd=?',[obj.uname,obj.upwd],(err,result)=>{
        if(err) throw err;
        // 结果是数组
        console.log(result);
        // 如果数组的长度为0，说明登陆失败;否则登陆成功
        if(result.length===0){
            res.send({code:301,msg:'login err'});
        }else{
            res.send({code:200,msg:'login suc'})
        }
    });
});
// 3.用户信息修改路由
// get /update
r.get('/update',(req,res)=>{
    // 3.1获取查询字符串传递的数据
    let obj=req.query;
    console.log(obj);
    // 3.2使用for-in循环遍历对象属性，如果那一项的值为空，响应哪一项是必须的
    // 访问每一个属性名
    let i=400;
    for(var key in obj){
        // key属性值   obj[key]对应的属性值
        // console.log(key);
        i++;
        // 判断属性值是否为空
        if(!obj[key]){
            res.send({code:i,msg:key+' required'});
            return;
        }
    }
    // 3.3执行SQL语句
    pool.query('UPDATE xz_user SET ? WHERE uid=?',[obj,obj.uid],(err,result)=>{
        if(err)throw err;
        console.log(result);
        // 返回结果是对象，如果对象的affectedRows属性值为0说明修改失败，否则修改成功
        if(result.affectedRows===0){
            res.send({code:301,msg:'update err'});
        }else{
            res.send({code:200,msg:'update suc'});
        }
    });
});
// 4.用户列表
// get /list
r.get('/list',(req,res)=>{
    // 4.1获取查询字符串获取的数据
    let obj=req.query;
    // console.log(obj);
    // 4.2如果页码为空或者负值默认为1
    if(!obj.pno || obj.pno<1) obj.pno=1;
    // 4.2如果每页数据量为空或者负值默认为3
    if(!obj.count || obj.count<1) obj.count=3;
    // 4.3将每页的数据量转为整型
    obj.count=parseInt(obj.count);
    console.log(obj);
    // 4.4计算开始查询的值，隐式将页码转为数值型
    let start=(obj.pno-1)*obj.count;
    // 4.5执行查询sql语句
    pool.query('SELECT * FROM xz_user LIMIT ?,?',[start,obj.count],(err,result)=>{
        if(err)throw err;
        // console.log(result);
        // 响应给浏览器
        res.send(result);
    });
});
// 5.删除用户
// get /delete
r.get('/delete',(req,res)=>{
    // 5.1获取查询字符串传递的数据
    let obj=req.query;
    console.log(obj);
    // 5.2判断是否为空
    if(!obj.uid){
        res.send({code:401,msg:'uid required'});
        return;
    }
    // 5.3执行SQL语句
    pool.query('DELETE FROM xz_user WHERE uid=?',[obj.uid],(err,result)=>{
        if(err)throw err;
        console.log(result);
        // 返回的是对象，如果对象下的affectedRows为0删除失败，否则删除成功
        if(result.affectedRows===0){
            res.send({code:301,mag:'delete err'});
        }else{
            res.send({code:200,mag:'delete suc'});
        }
    });
});
// 导出路由器对象
module.exports=r;